//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================

#ifndef __CENUMITEMINFO_H__
#define __CENUMITEMINFO_H__

#include "refutil.h"

class CEnumItemInfo : public IEnumItemInfo
{
public:
    CARAPI_(PInterface) Probe(REIID riid);
    CARAPI_(UInt32) AddRef();
    CARAPI_(UInt32) Release();
    CARAPI Aggregate(AggregateType type, PInterface pObj);
    CARAPI GetDomain(PInterface *ppObj);

    CARAPI GetName(
        /* [out] */ AStringBuf * pName);

    CARAPI GetEnumInfo(
        /* [out] */ IEnumInfo ** ppEnumInfo);

    CARAPI GetValue(
        /* [out] */ Int32 * pValue);

    CEnumItemInfo(
        /* [in] */ IEnumInfo  * pEnumInfo,
        /* [in] */ AString name,
        /* [in] */ Int32 value);

    virtual ~CEnumItemInfo();

private:
    IEnumInfo  *m_pEnumInfo;
    AString    m_asName;
    Int32      m_iValue;

    Interlocked m_cRef;
};

#endif // __CENUMITEMINFO_H__
